
#include <iostream>
#include <string>
#include <regex>
#include <vector>
#include <algorithm>

std::string a(const std::string& v) {
    if (v.empty() || std::count_if(v.begin(), v.end(), ::isspace) < 1) {
        return "Мало данных для анализа";
    }

    std::vector<std::string> words;
    std::regex word_regex("\\S+");
    std::sregex_token_iterator iter(v.begin(), v.end(), word_regex, -1);
    std::sregex_token_iterator end;
    std::copy(iter, end, std::back_inserter(words));

    int q = std::count_if(words.begin(), words.end(), [](const std::string& word) {
        return std::regex_match(word, std::regex("[А-Я]"));
    });

    int w = std::count_if(words.begin(), words.end(), [](const std::string& word) {
        return std::regex_search(word, std::regex("[a-zA-Z]"));
    });

    int e = std::count_if(words.begin(), words.end(), [](const std::string& word) {
        return word.length() <= 3;
    });

    int r = std::count_if(words.begin(), words.end(), [](const std::string& word) {
        return word.find('-') != std::string::npos;
    });

    auto b = std::max_element(words.begin(), words.end(), [](const std::string& a, const std::string& b) {
        return a.length() < b.length();
    });
    int y = b->length();

    std::string result = "Кол-во слов: " + std::to_string(words.size()) + "\n";
    result += "Кол-во слов с заглавной кириллической буквы: " + std::to_string(q) + "\n";
    result += "Кол-во слов содержащих латинский символ: " + std::to_string(w) + "\n";
    result += "Кол-во слов не превышающих 3 символа: " + std::to_string(e) + "\n";
    result += "Кол-во слов в составе которых имеется дефис: " + std::to_string(r) + "\n";
    result += "Самое длинное слово: " + *b + "\n";
    result += "Длина слова: " + std::to_string(y);

    return result;
}

int main() {
    std::string v;
    std::cout << "Введите слова, разделенные пробелом: ";
    std::getline(std::cin, v);
    std::cout << a(v) << std::endl;
    return 0;
}

